package com.demo.mapper;

import com.demo.bean.Task;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 李天航
 * 操作可变活动表
 */
@Repository
public interface TaskMapper {
    /**
     * 根据用户账号获取可变活动清单
     *
     * @param task 只获取userAccount和weekNum
     * @return 任务清单
     */
    List<Task> getTasksByUserAccountAndWeekNum(Task task);

    /**
     * 添加一项任务
     * @param task 任务信息
     */
    void addTask(Task task);

    /**
     * 删除一项任务
     * @param taskId 任务编号
     */
    void deleteTask(int taskId);

    /**
     * 更新一项任务
     * @param task 更新过后的任务
     */
    void updateTask(Task task);

    /**
     * 根据任务编号获取任务
     * @param taskId 任务编号
     * @return 任务信息
     */
    Task getTaskById(Integer taskId);

    /**
     * 获取未完成的任务列表
     * @param task 用户账号和周数
     * @return 未完成的任务列表
     */
    List<Task> getUnFinishedTasksByUserAccountAndWeekNum(Task task);

    /**
     * 完成一项任务
     * @param taskId 任务编号
     */
    void finishTask(Integer taskId);

    /**
     * 取消一项任务的完成
     * @param taskId 任务编号
     */
    void unfinishTask(Integer taskId);

    /**
     * 任务总数
     * @param task userAccount,weekNum
     * @return 任务总数
     */
    Integer getTaskCount(Task task);
}
